package CAPA_ENLACE_DE_DATOS;

import RECURSOS.ERROR;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class AD_ENLACE_DATOS {
    static private Connection conexion;                      

    public Connection getConexion() {
        return conexion;
    }
      
    public ERROR establecerconexion() {                
       //169.254.244.246
              String url = "jdbc:postgresql://169.254.244.246/BD_SOVI_2";               
              try {
                  Class.forName("org.postgresql.Driver");
                  conexion = DriverManager.getConnection(url,"postgres","bonito");     
                  return null;
              } 
              catch(SQLException e) { 
                  ERROR er=new ERROR();
                  er.setDescripcion_error(e.getMessage());                                                       
                  er.setTipo_error("SQL");
                  return er;
              }
              catch(ClassNotFoundException e) {                  
                  ERROR er=new ERROR();
                  er.setDescripcion_error(e.getMessage());                                                       
                  er.setTipo_error("ClassNotFound");
                  return er;                  
              }                   
    }
    
    public int ejecutar_int(String sql,ERROR err){
        ERROR con;
        con=establecerconexion();
        if(con==null)
        {
            try{        
                    Statement comando = conexion.createStatement();                                                        
                    ResultSet resultado=comando.executeQuery(sql);
                    resultado.next();
                    err=null;
                    return Integer.parseInt(resultado.getString(1));
                    //comando.close();                    
                  }
            catch(SQLException e) {                  
                  err.setDescripcion_error(e.getMessage());                                                       
                  err.setTipo_error("SQL");
                  return -1;                                    
            }                  
            finally
            {
                terminarconexion();
            }
        }
        else
        {           
            err.setDescripcion_error(con.getDescripcion_error());
            err.setTipo_error(con.getTipo_error());
            return -1;                                
        }        
    }    
    
    public ResultSet ejecutar_q(String sql,ERROR err){
        ERROR con;
        con=establecerconexion();
        if(con==null)
        {
            try{        
                    Statement comando = conexion.createStatement();                                                        
                    ResultSet resultado=comando.executeQuery(sql);                    
                    err=null;
                    return resultado;                    
                  }
            catch(SQLException e) {                  
                  err.setDescripcion_error(e.getMessage());                                                       
                  err.setTipo_error("SQL");
                  return null;                                    
            }
            finally
            {
                terminarconexion();
            }
        }
        else
        {           
            err.setDescripcion_error(con.getDescripcion_error());
            err.setTipo_error(con.getTipo_error());
            return null;                                
        }        
        
    }
    public void ejecutar(String sql,ERROR err){
        ERROR con;
        con=establecerconexion();
        if(con==null)
        {
            try{        
                    Statement comando = conexion.createStatement();                                                        
                     System.out.println(sql);
                    comando.executeQuery(sql);
                    comando.close();                    
                  }
            catch(SQLException e) {                  
                  err.setDescripcion_error(e.getMessage());                                                       
                  err.setTipo_error("SQL");
                                                   
            }                  
            finally
            {
                terminarconexion();
            }
        }
        else
        {           
            err.setDescripcion_error(con.getDescripcion_error());
            err.setTipo_error(con.getTipo_error());
            
        }        
    }   
    
    public  ERROR terminarconexion() {    
        try {
            conexion.close();           
            return null;
        }
        catch(SQLException e) {
                  ERROR er=new ERROR();
                  er.setDescripcion_error(e.getMessage());                                                       
                  er.setTipo_error("SQL");
                  return er;       
        }        
    }    
}